<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Clase Calendar : Gu&iacute;a del Usuario de CodeIgniter</title>

<style type='text/css' media='all'>@import url('../userguide.css');</style>
<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />

<script type="text/javascript" src="../nav/nav.js"></script>
<script type="text/javascript" src="../nav/prototype.lite.js"></script>
<script type="text/javascript" src="../nav/moo.fx.js"></script>
<script type="text/javascript" src="../nav/user_guide_menu.js"></script>

<meta http-equiv='expires' content='-1' />
<meta http-equiv= 'pragma' content='no-cache' />
<meta name='robots' content='all' />
<meta name='author' content='ExpressionEngine Dev Team' />
<meta name='description' content='Gu&iacute;a del Usuario de CodeIgniter' />

</head>
<body>

<!-- START NAVIGATION -->
<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="Mostrar Tabla de Contenido" alt="Mostrar Tabla de Contenido" /></a></div>
<div id="masthead">
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td><h1>Gu&iacute;a del Usuario de CodeIgniter Versi&oacute;n 2.1.1</h1></td>
<td id="breadcrumb_right"><a href="../toc.html">Tabla de Contenido</a></td>
</tr>
</table>
</div>
<!-- END NAVIGATION -->


<!-- START BREADCRUMB -->
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td id="breadcrumb">
<a href="http://codeigniter.com/">CodeIgniter</a> &nbsp;&#8250;&nbsp;
<a href="../index.html">Gu&iacute;a del Usuario</a> &nbsp;&#8250;&nbsp;
Clase Calendar
</td>
<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="escodeigniter.com/guia_usuario/" />Buscar en la Gu&iacute;a del Usuario&nbsp; <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />&nbsp;<input type="submit" class="submit" name="sa" value="Go" /></form></td>
</tr>
</table>
<!-- END BREADCRUMB -->

<br clear="all" />


<!-- START CONTENT -->
<div id="content">

<h1>Clase Calendar</h1>

<p>La clase Calendar permite crear dinamicamente calendarios. Sus calendarios pueden formatearse a trav&eacute;s del uso de una plantilla calendario, permitiendo un 100% de control sobre todos los aspectos de su dise&ntilde;o. Adem&aacute;s, puede pasar datos a las celdas de su calendario.</p>

<h2>Inicializando la clase</h2>
<p>Similar a la mayor&iacute;a de las clases en codeIgniter, la clase calendar es inicializada en su controlador usando la funci&oacute;n <dfn>$this->load->library</dfn>:</p>

<code>$this->load->library('calendar');</code>

<p>Una vez cargado, el objeto Calendario estar&aacute; disponible usando: <dfn>$this->calendar</dfn></p>

<h2>Mostrando un calendario</h2>
<p>&Eacute;ste es  un ejemplo muy simple que ense&ntilde;a como puede mostrar un calendario:</p>

<code>$this->load->library('calendar');<br />
<br />
echo $this->calendar->generate();</code>

<p>El c&oacute;digo anterior generar&aacute; un calendario para el mes/a&ntilde;o actual basado en la hora de su servidor. Para mostrar un calendario para un mes y a&ntilde;o espec&iacute;ficos deber&aacute; pasar esta infromaci&oacute;n a la funci&oacute;n de generaci&oacute;n de calendario:</p>

<code>$this->load->library('calendar');<br />
<br />
echo $this->calendar->generate(<kbd>2006</kbd>, <kbd>6</kbd>);</code>

<p>El c&oacute;digo de arriba generar&aacute; un calendario que muestra el mes de junio del a&ntilde;o 2006. El primer par&aacute;metro especifica el a&ntilde;o, el segundo par&aacute;metro especifica el mes.</p>

<h2>Pasando datos a las celdas de tu calendario </h2>

<p>Agregar datos a las celdas de tu calendario involucra crear un arreglo asociativo en el cual los &iacute;ndices corresponden a los d&iacute;as que desea llenar y el valor del arreglo contiene los datos. El arreglo es pasado al tercer par&aacute;metro de la funci&oacute;n generar calendario. Considere este ejemplo:</p>

<code>$this->load->library('calendar');<br />
<br />
$data = array(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp; => 'http://your-site.com/news/article/2006/03/',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp; => 'http://your-site.com/news/article/2006/07/',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13 => 'http://your-site.com/news/article/2006/13/',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;26 => 'http://your-site.com/news/article/2006/26/'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
<br />
echo $this->calendar->generate(<kbd>2006</kbd>, <kbd>6</kbd>, <var>$data</var>);</code>

<p>Usando el ejemplo anterior, los d&iacute;as n&uacute;mero 3, 7, 13 y 26 se convertir&aacute;n en enlaces que apuntan a las URLs provistas.</p>

<p class="important"><strong>Nota:</strong> Por defecto se adume que el array contiene links. En la secci&oacute;n que explica la plantilla calendario ver&aacute; como puede personalizar el modo en que los datos son pasados, de manera que puede pasar tipos diferentes de informaci&oacute;n</p>

<h2>Ajustando las Preferencias de Visualizaci&oacute;n</h2>
<p>Hay siete preferencias que puede ajustar para controlar varios aspectos del calendario. Las preferencias son ajustadas pasando un arreglo de preferencias en el segundo par&aacute;metro de la funcion loading. Este es un ejemplo:</p>

<code>
$prefs = array (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'start_day'&nbsp;&nbsp;&nbsp; => 'saturday',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'month_type'&nbsp;&nbsp; => 'long',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'day_type'&nbsp;&nbsp;&nbsp;&nbsp; => 'short'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
<br />
$this->load->library('calendar', $prefs);<br />
<br />
echo $this->calendar->generate();</code>

<p>El c&oacute;digo citado anteriormente har&iacute;a el calendario comenzar en s&aacute;bado, usa la cabezera de mes &quot;largo&quot;, y los nombres de d&iacute;as &quot;peque&ntilde;os&quot;. M&aacute;s informaci&oacute;n con respecto a las preferencias a continuaci&oacute;n.</p>

<table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
<tr>
<th>Preferencia</th>
<th>Valor por defecto </th>
<th>Opciones</th>
<th>Descripci&oacute;n</th>
</tr><tr>
<td class="td"><strong>template</strong></td><td class="td">None</td><td class="td">None</td>
<td class="td">Un cadena que contiene su plantilla calendario. Ver la seccion plantilla debajo.</td>
</tr><tr>
<td class="td"><strong>local_time</strong></td><td class="td">time()</td><td class="td">None</td>
<td class="td">Un  timestamp Unix que corresponde al tiempo actual.</td>
</tr><tr>
<td class="td"><strong>start_day</strong></td><td class="td">sunday</td><td class="td">Any week day (sunday, monday, tuesday, etc.)</td>
<td class="td">Ajusta el d&iacute;a de la semana con que el calendario deber&iacute;a iniciar.</td>
</tr><tr>
<td class="td"><strong>month_type</strong></td><td class="td">long</td><td class="td">long, short</td>
<td class="td">Determina que versi&oacute;n del nombre del mes usar en la cabecera. long = January, short = Jan.</td>
</tr><tr>
<td class="td"><strong>day_type</strong></td><td class="td">abr</td><td class="td">long, short, abr</td>
<td class="td">Determina que versi&oacute;n de los nombre de los d&iacute;as de la semana usar en la cabecera de la columna. long = Domingo, short = Dom, abr = Do.</td>
</tr><tr>
<td class="td"><strong>show_next_prev</strong></td><td class="td">FALSE</td><td class="td">TRUE/FALSE (boolean)</td>
<td class="td">Determina si se mostrar&aacute;n los links que permiten ir al mes siguiente/previo. Ver informaci&oacute;n sobre esta caracter&iacute;stica debajo.</td>
</tr><tr>
<td class="td"><strong>next_prev_url</strong></td><td class="td">None</td><td class="td">A URL</td>
<td class="td">Ajusta el  basepath usado en los links del calendario siguiente/previo.</td>
</tr>
</table>

<h2>Mostrando los Links Mes Siguiente/Previo</h2>
<p>Permitir a su calendario incrementar/decrementar din&aacute;micamente a trav&eacute;s de los links next/previous requiere que establezca su c&oacute;digo de calendario similar a este ejemplo:</p>

<code>$prefs = array (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'show_next_prev'&nbsp;&nbsp;=> TRUE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'next_prev_url'&nbsp;&nbsp; => 'http://www.your-site.com/index.php/calendar/show/'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
<br />
$this-&gt;load-&gt;library('calendar', $prefs);<br />
<br />
echo $this->calendar->generate(<var>$this->uri->segment(3)</var>, <var>$this->uri->segment(4)</var>);</code>

<p>Advertir&aacute; algunas cosas acerca del ejemplo citado anteriormente:</p>

<ul>
<li>Debe ajustar el  "show_next_prev" a TRUE.</li>
<li>Debe proveer la URL al controlador que contiene su calendario en la preferencia  "next_prev_url" preference.</li>
<li>Debe proveer el &quot;A&ntilde;o&quot; y el &quot;Mes&quot; a la funci&oacute;n de generaci&oacute;n de calendario mediante los segmenteos URI donde aparecen (Nota: La clase calendario autom&aacute;ticamente agrega el a&ntilde;o/mes a la URL base provista.).</li>
</ul>

<h2>Creando una Plantilla Calendario</h2>
<p>Creando una plantilla calendario puede tener 100% de control sobre el dise&ntilde;o de su calendario. Cada componente de su calendario estar&aacute; contenido dentro de un par de pseudo-variables como se muestra aqu&iacute;: </p>

<code>
$prefs['template'] = '<br /><br />
&nbsp;&nbsp;&nbsp;<dfn>{table_open}</dfn><var>&lt;table border="0" cellpadding="0" cellspacing="0"></var><dfn>{/table_open}</dfn><br />
<br />
&nbsp;&nbsp;&nbsp;<dfn>{heading_row_start}</dfn><var>&lt;tr></var><dfn>{/heading_row_start}</dfn><br />
<br />
&nbsp;&nbsp;&nbsp;<dfn>{heading_previous_cell}</dfn><var>&lt;th>&lt;a href="</var><kbd>{previous_url}</kbd><var>">&amp;lt;&amp;lt;&lt;/a>&lt;/th></var><dfn>{/heading_previous_cell}</dfn><br />
&nbsp;&nbsp;&nbsp;<dfn>{heading_title_cell}</dfn><var>&lt;th colspan="</var><kbd>{colspan}</kbd><var>"></var><kbd>{heading}</kbd><var>&lt;/th></var><dfn>{/heading_title_cell}</dfn><br />
&nbsp;&nbsp;&nbsp;<dfn>{heading_next_cell}</dfn><var>&lt;th>&lt;a href="</var><kbd>{next_url}</kbd><var>">&amp;gt;&amp;gt;&lt;/a>&lt;/th></var><dfn>{/heading_next_cell}</dfn><br />
<br />
&nbsp;&nbsp;&nbsp;<dfn>{heading_row_end}</dfn><var>&lt;/tr></var><dfn>{/heading_row_end}</dfn><br />
<br />
&nbsp;&nbsp;&nbsp;<dfn>{week_row_start}</dfn><var>&lt;tr></var><dfn>{/week_row_start}</dfn><br />
&nbsp;&nbsp;&nbsp;<dfn>{week_day_cell}</dfn><var>&lt;td></var><dfn>{week_day}</dfn><var>&lt;/td></var><dfn>{/week_day_cell}</dfn><br />
&nbsp;&nbsp;&nbsp;<dfn>{week_row_end}</dfn><var>&lt;/tr></var><dfn>{/week_row_end}</dfn><br />
<br />
&nbsp;&nbsp;&nbsp;<dfn>{cal_row_start}</dfn><var>&lt;tr></var><dfn>{/cal_row_start}</dfn><br />
&nbsp;&nbsp;&nbsp;<dfn>{cal_cell_start}</dfn><var>&lt;td></var><dfn>{/cal_cell_start}</dfn><br />
<br />
&nbsp;&nbsp;&nbsp;<dfn>{cal_cell_content}</dfn><var>&lt;a href="</var><kbd>{content}</kbd><var>"></var><kbd>{day}</kbd><var>&lt;/a></var><dfn>{/cal_cell_content}</dfn><br />
&nbsp;&nbsp;&nbsp;<dfn>{cal_cell_content_today}</dfn><var>&lt;div class="highlight">&lt;a href="</var><kbd>{content}</kbd><var>"></var><kbd>{day}</kbd><var>&lt;/a>&lt;/div></var><dfn>{/cal_cell_content_today}</dfn><br />
<br />
&nbsp;&nbsp;&nbsp;<dfn>{cal_cell_no_content}</dfn><var></var><kbd>{day}</kbd><var></var><dfn>{/cal_cell_no_content}</dfn><br />
&nbsp;&nbsp;&nbsp;<dfn>{cal_cell_no_content_today}</dfn><var>&lt;div class="highlight"></var><kbd>{day}</kbd><var>&lt;/div></var><dfn>{/cal_cell_no_content_today}</dfn><br />
<br />
&nbsp;&nbsp;&nbsp;<dfn>{cal_cell_blank}</dfn><var>&amp;nbsp;</var><dfn>{/cal_cell_blank}</dfn><br />
<br />
&nbsp;&nbsp;&nbsp;<dfn>{cal_cell_end}</dfn><var>&lt;/td></var><dfn>{/cal_cell_end}</dfn><br />
&nbsp;&nbsp;&nbsp;<dfn>{cal_row_end}</dfn><var>&lt;/tr></var><dfn>{/cal_row_end}</dfn><br />
<br />
&nbsp;&nbsp;&nbsp;<dfn>{table_close}</dfn><var>&lt;/table></var><dfn>{/table_close}</dfn><br />
';<br />
<br />
$this->load->library('calendar', $prefs);<br />
<br />
echo $this->calendar->generate();</code>

</div>
<!-- END CONTENT -->


<div id="footer">
<p>
Tema anterior:&nbsp;&nbsp;<a href="benchmark.html">Clase Benchmark</a>
&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="#top">Subir</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="../index.html">Gu&iacute;a del Usuario</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
Pr&oacute;ximo tema:&nbsp;&nbsp;<a href="cart.html">Clase Cart</a>
</p>
<p><a href="http://codeigniter.com">CodeIgniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006 - 2011 &nbsp;&middot;&nbsp; <a href="http://ellislab.com/">EllisLab, Inc.</a></p>
</div>

</body>
</html>